package IOAndProperties.IO;

import java.io.FileWriter;
import java.io.IOException;

/*
    java.io.write  写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是，多数子类将重写此处定义的一些方法，以提供更高的效率和/或其他功能。
        共性的成员方法：
        abstract  void	close()  关闭此流，但要先刷新它。
        abstract  void	flush()  刷新该流的缓冲。
        void	write(char[] cbuf)  写入字符数组。
        abstract  void	write(char[] cbuf, int off, int len)  写入字符数组的某一部分。
        void	write(int c)  写入单个字符。
        void	write(String str)  写入字符串。
        void	write(String str, int off, int len)  写入字符串的某一部分。

      java.io.FileWriter  extends   java.io.OutputStreamWriter  extends  java.io.Writer
      FileWriter：  用来写入字符文件的便捷类
      FileWriter 用于写入字符流

        构造方法：
            FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象。
            FileWriter(File file)  根据给定的 File 对象构造一个 FileWriter 对象。
          参数：写入数据的目的地
          作用：
            1、创建一个FileWrite对象
            2、根据传递的参数，创建文件
            3、将FileWrite对象指向文件

         使用步骤：
            1、创建FileWrite对象，并传递参数
            2、使用FileWrite中的方法write，把数据写入到内存缓冲区中（字符转换为字节）
            3、使用FileWrite中的方法Flush，把内存缓冲区中的数据，刷新到文件中
            4、使用FileWrite中的方法close，释放资源（会先把内存缓冲区中的数据刷新到文件中）
*/
public class WriteTest01 {
    public static void main(String[] args) throws IOException {
        //1、创建FileWrite对象，并传递参数
        FileWriter fileWriter = new FileWriter("/Users/ivy/Documents/java/mydir/FileWrite.txt");
        //2、使用FileWrite中的方法write，把数据写入到内存缓冲区中（字符转换为字节）
        fileWriter.write(97);
        fileWriter.write("你好！");
        fileWriter.flush();
        //在没用调用Flush或者Close方法，字符不会写入文件中

        // 4、使用FileWrite中的方法close，释放资源（会先把内存缓冲区中的数据刷新到文件中）
        //close会自动执行一次Flush
        fileWriter.close();
    }
}
